Title Banner

Previous Book Contents Book Index Next

Inside Macintosh: OpenDoc Cookbook /
Chapter 2 - SamplePart Tutorial


SamplePart Class Definition

Most of the SamplePart implementation is contained within a single C++ class called SamplePart. The public methods declared in this class correspond exactly to methods of the same name in som_SamplePart, all of which override methods of ODPart. The protected methods are subroutines internal to SamplePart called in the implementation of the public methods. The private members of SamplePart are its data members.

Listing 2-1 shows the complete class definition of SamplePart.

Listing 2-1 SamplePart class definition

class SamplePart {
   
   public:
   
   SamplePart();
   virtual ~SamplePart();
   
   // -- Initialization --
   void  InitPart(Environment* ev, ODStorageUnit* storageUnit,
                              ODPart* partWrapper);
   void  InitPartFromStorage(Environment* ev, ODStorageUnit* storageUnit,
                              ODPart* partWrapper);
   
   // -- Storage --
   void  Release(Environment* ev);
   void  ReleaseAll(Environment* ev);
   ODSize  Purge(Environment* ev, ODSize size);
   void  Externalize(Environment* ev);
   void  ExternalizeKinds(Environment* ev, ODTypeList* kindset);
   void  ChangeKind(Environment* ev, ODType kind);
   void  CloneInto(Environment* ev, ODDraftKey key,
                              ODStorageUnit* destinationSU,
                              ODFrame* initiatingFrame);
   void  WritePartInfo(Environment* ev, ODInfoType partInfo,
                              ODStorageUnitView* storageUnitView);
   ODInfoType ReadPartInfo(Environment* ev, ODFrame* frame,
                              ODStorageUnitView* storageUnitView);
   void  ClonePartInfo(Environment *ev, ODDraftKey key, ODInfoType partInfo,
                              ODStorageUnitView* storageUnitView,
                              ODFrame* scopeFrame);
   
   // -- Layout --
   void  DisplayFrameAdded(Environment* ev, ODFrame* frame);
   void  DisplayFrameRemoved(Environment* ev, ODFrame* frame);
   void  DisplayFrameClosed(Environment* ev, ODFrame* frame);
   void  DisplayFrameConnected(Environment* ev, ODFrame* frame);
   void  AttachSourceFrame(Environment* ev, ODFrame* frame,
                              ODFrame* sourceFrame);
   void  ViewTypeChanged(Environment* ev, ODFrame* frame);
   void  FrameShapeChanged(Environment* ev, ODFrame* frame);
   ODID  Open(Environment* ev, ODFrame* frame);
      
   // -- Imaging --
   void  Draw(Environment* ev, ODFacet* facet, ODShape* invalidShape);
   void  GeometryChanged(Environment* ev, ODFacet* facet,
                              ODBoolean clipShapeChanged,
                              ODBoolean externalTransformChanged);
   void  HighlightChanged(Environment* ev, ODFacet* facet);
   void  FacetAdded(Environment* ev, ODFacet* facet);
   void  FacetRemoved(Environment* ev, ODFacet* facet);
   
   // -- Activation --
   ODBoolean BeginRelinquishFocus(Environment* ev, ODTypeToken focus,
                              ODFrame* ownerFrame,
                              ODFrame* proposedFrame);
   void  CommitRelinquishFocus(Environment* ev, ODTypeToken focus,
                              ODFrame* ownerFrame,
                              ODFrame* proposedFrame);
   void  AbortRelinquishFocus(Environment* ev, ODTypeToken focus,
                              ODFrame* ownerFrame,
                              ODFrame* proposedFrame);
   void  FocusAcquired(Environment* ev,ODTypeToken focus,
                              ODFrame* ownerFrame);
   void  FocusLost(Environment* ev,ODTypeToken focus,
                              ODFrame* ownerFrame);
   
   // -- Event handling --
   ODBoolean HandleEvent(Environment* ev, ODEventData* event,
                              ODFrame* frame, ODFacet* facet,
                              ODEventInfo* eventInfo);
   void  AdjustMenus(Environment* ev, ODFrame* frame);
   
   protected:
   
   // -- Initialization --
   void  Initialize(Environment* ev);
   
   // -- Storage --
   void  CheckAndAddProperties(Environment* ev,
                              ODStorageUnit* storageUnit);
   void  CleanseContentProperty(Environment* ev,
                              ODStorageUnit* storageUnit);
   void  InternalizeStateInfo(Environment* ev,
                              ODStorageUnit* storageUnit);
   void  InternalizeContent(Environment* ev,
                              ODStorageUnit* storageUnit);
   void  ExternalizeStateInfo(Environment* ev,
                              ODStorageUnit* storageUnit,
                              ODDraftKey key, ODFrame* scopeFrame);
   void  ExternalizeContent(Environment* ev, ODStorageUnit* storageUnit,
                              ODDraftKey key, ODFrame* scopeFrame);
   void  SetDirty(Environment* ev);
   
   // -- Event Handling --
   ODBoolean HandleMenuEvent(Environment* ev, ODEventData* event,
                               ODFrame* frame);
   ODBoolean HandleMouseEvent(Environment* ev, ODEventData* event,
                              ODFacet* facet, ODEventInfo* eventInfo);
   void  DoMouseEvent(Environment* ev, ODFacet* facet, Point* where);
   void  DoDialogBox(Environment* ev, ODFrame* frame,
                              ODSShort dialogID, ODUShort errorNumber = 0);
   
   // -- Imaging --
   void  DrawFrameView(Environment* ev, ODFacet* facet);
   void  DrawIconView(Environment* ev, ODFacet* facet);
   void  DrawThumbnailView(Environment* ev, ODFacet* facet);
   void  GenerateThumbnail( Environment* ev, ODFrame* frame );
   
   // -- Activation --
   void  PartActivated(Environment* ev, ODFrame* frame);
   ODBoolean ActivateFrame(Environment* ev, ODFrame* frame);
   void  WindowActivating(Environment* ev, ODFrame* frame,
                              ODBoolean activating);
   void  RelinquishAllFoci(Environment* ev, ODFrame* frame);
   
   // -- Layout --
   ODWindow* AcquireFramesWindow(Environment* ev, ODFrame* frame);
   ODWindow* CreateWindow(Environment* ev, ODFrame* frame, ODType frameType,
                              WindowProperties* windowProperties);
   void  CleanupWindow(Environment* ev, ODFrame* frame);
   WindowProperties* GetDefaultWindowProperties(Environment* ev, ODFrame* frame,
                              Rect* windowRect);
   WindowProperties* GetSavedWindowProperties(Environment* ev, ODFrame* frame);
   Rect  CalcPartWindowSize(Environment* ev, ODFrame* sourceFrame);
   Rect  CalcPartWindowPosition(Environment* ev, ODFrame* frame,
                              Rect* partWindowBounds);
   ODFacet* GetActiveFacetForFrame(Environment* ev, ODFrame* frame);
   ODShape* CalcNewUsedShape(Environment* ev, ODFrame* frame);
   void  UpdateFrame(Environment* ev, ODFrame* frame, ODTypeToken view,
                              ODShape* usedShape);
   void  CleanupDisplayFrame(Environment* ev, ODFrame* frame,
                              ODBoolean frameRemoved);
                              
   
   private:

   CList*   fDisplayFrames;
   ODBoolean   fDirty;
   ODPart*   fSelf;
   ODBoolean   fReadOnlyStorage;
};

Previous Book Contents Book Index Next

© Apple Computer, Inc.
16 JUL 1996




Navigation graphic, see text links

Main | Page One | What's New | Apple Computer, Inc. | Find It | Contact Us | Help